package com.arpa.wms.service;

import com.arpa.wms.domain.dto.InboundItemDTO;
import com.arpa.wms.domain.entity.InboundItem;
import com.arpa.wms.domain.vo.InboundItemVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 入库单明细 服务类
 * </p>
 *
 * @author LEO
 * @since 2020-08-04
 */
public interface IInboundItemService extends IService<InboundItem> {

    /**
     * 保存
     * @param entity
     * @return
     */
    @Override
    boolean save(InboundItem entity);

    /**
     * 根据code更新实体
     * @param entity
     * @return
     */
    int updateByCode(InboundItem entity);

    /**
     * 查询列表
     * @param inboundItemDTO
     * @return
     */
    List<InboundItemVO> queryList(InboundItemDTO inboundItemDTO);

    /**
     * 查询合计,包含总数
     * @param inboundItemDTO
     * @return
     */
    InboundItemVO queryListSum(InboundItemDTO inboundItemDTO);

    /**
     * 更新入库明细的存货日期、批号
     * @param putawayCode
     * @return
     */
    int updateInventoryInfoByPutawayCode(String putawayCode);

    /**
     * 获取入库明细详细信息，
     * 用于零散合同修改、启用时使用
     * @param warehouseCode 仓库标识
     * @param goodsCode 商品标识
     * @param receiveLot 收货批号
     * @return
     */
    Map<String, Object> getItemInfo(String warehouseCode, String goodsCode, String receiveLot);

    /**
     * 批量插入入库单明细
     * @param inboundItems
     */
    void batchInsert(List<InboundItem> inboundItems);

    /**
     * 查询列表
     * @return
     */
    List<InboundItemVO> queryInboundGoodsSortQuantity();
}
